grep(Global search a Regular Expression and Print)
是Linux系統中很常用來搜尋特定字串或樣式的工具.
用來查找文字內容或是某個檔案.
且通常在每個Linux發行版本都預先有安裝,
就算沒安裝也能透過apt-get
或yum
等等的套件管理器進行安裝.
且能搭配Regexp做匹配查找或過濾.
grep跟PowerShell的Select-String功能與目的都雷同
grep [option] pattern [file1 file2...]
or
stdout | grep [option] pattern
來簡單玩一下
grep '^root' /etc/passwd /etc/shadow
這裡用的是格式1, 讀取檔案的方式^root
是我們的pattern匹配樣式, 這裡用到Regexp, 表示該行以root開始/etc/passwd /etc/shadow
這裡是兩個檔案
最前面是顯示有匹配到的檔案, grep會把匹配到的單字, 給HighLight起來.
有時候就只是想要知道執行結果的話, 能透過$?
來觀察.
當grep有找到匹配項目時, 結束狀態會是0
沒找到匹配內容時, 結束狀態則是1
找不到指定文件時, 則是2
剛剛的例子, 改造一下
grep '^root' /etc/passwd /etc/shadow; echo $?
利用echo做打印, 能看到輸出為0
, 因為有找到匹配內容
grep '^ithome' /etc/passwd /etc/shadow; echo $?
能看到輸出為1
, 因為找不到匹配內容
grep '^ithome' /etc/passwddddddd; echo $?
能看到輸出為2
, 因為找不到檔案
----參考來源
鳥哥Linux私房菜 $?